package com.coderdream.chapter12.decorator.sample;

public class FullBorder extends Border {

	protected FullBorder(Display display) {
		super(display);
	}

	/**
	 * 字數 = 內容字數 + 內容兩邊的裝飾字符
	 */
	@Override
	public int getColumns() {
		return 1 + display.getColumns() + 1;
	}

	/**
	 * 行數 = 內容行數 + 上下的裝飾字符
	 */
	@Override
	public int getRows() {
		return 1 + display.getRows() + 1;
	}

	/**
	 * 指定該行的內容
	 */
	@Override
	public String getRowText(int row) {
		if (row == 0) {// 外框頂端
			return "+" + makeLine('-', display.getColumns()) + "+";
		} else if (row == display.getRows() + 1) { // 外框底部
			return "+" + makeLine('-', display.getColumns()) + "+";
		} else {// 其他部分
			return "|" + display.getRowText(row - 1) + "|";
		}
	}

	/**
	 * @param ch
	 * @param count
	 * @return
	 */
	private String makeLine(char ch, int count) {
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < count; i++) {
			buf.append(ch);
		}

		return buf.toString();
	}

}
